﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using itau.im.entidade;
using EnterpriseLibraryWrapper;
using System.Data;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.dado
{
    #region Código Gerado Pela Fábrica de Software (Classe)

    public class ParametroAtribuicaoDB : IParametroAtribuicaoDAO
    {
        #region Código Gerado Pela Fábrica de Software (Métodos)

        public DataSet ObterParametrosPorParametroRegra(ParametrizacaoAtribuicao parametro)
        {
            IDataAccessWrapper data = null;
            DataSet ds = null;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", parametro.CodigoParametroAtribuicao, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_DOMN_PARM_AT", parametro.CodigoDominioParametroAtribuicao, DbType.Int32));

                ds = data.ExecuteDataSet("DB2IM.IM0S8F");

                return ds;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                data.Dispose();
                data = null;
                ds = null;
            }

            return ds;
        }

        public IList<ParametroAtribuicao> ObterParametrosAtribuicaoPreenchidos(int codigoRegraAtribuicao, DateTime dataInicioVigencia)
        {
            List<ParametroAtribuicao> lista = new List<ParametroAtribuicao>();
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterIn.Add(new ParameterInWrapper("@COD_REGR_ATRI_CUR", codigoRegraAtribuicao, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@DAT_INIO_VIGE", dataInicioVigencia, DbType.DateTime));

                ds = data.ExecuteDataSet("DB2IM.IM0S8E");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        lista.Add(EntidadeFactory.getParametroAtribuicaoPreenchido(linha));
                    }
                }

                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<ParametroAtribuicao>();

        }

        public IList<UnidadeTipoParametroValor> ObterUnidadesPorTipoParametroValor()
        {
            List<UnidadeTipoParametroValor> lista = new List<UnidadeTipoParametroValor>();
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();
                ds = data.ExecuteDataSet("DB2IM.IMSJF");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        lista.Add(EntidadeFactory.getUnidadeTipoParametroValor(linha));
                    }
                }

                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<UnidadeTipoParametroValor>();
        }

        public IList<DominioParametroAtribuicao> ObterRegistrosDominio()
        {
            List<DominioParametroAtribuicao> lista = new List<DominioParametroAtribuicao>();
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                ds = data.ExecuteDataSet("DB2IM.IM0S8Q");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        lista.Add(EntidadeFactory.getDominioParametroAtribuicao(linha));
                    }
                }

                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<DominioParametroAtribuicao>();
        }

        public IList<DominioParametroAtribuicao> ObterRegistrosDominioParametroRegras(int codigoParametro)
        {
            List<DominioParametroAtribuicao> lista = new List<DominioParametroAtribuicao>();
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", codigoParametro, DbType.Int32));

                ds = data.ExecuteDataSet("DB2IM.IM0S9A");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        lista.Add(EntidadeFactory.getDominioParametroAtribuicao(linha));
                    }
                }

                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<DominioParametroAtribuicao>();
        }

        public IList<DominioParametroAtribuicao> ObterRegistrosDominioParametro(int codigoParametro)
        {
            List<DominioParametroAtribuicao> lista = new List<DominioParametroAtribuicao>();
            IDataAccessWrapper data = null;
            DataSet ds;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", codigoParametro, DbType.Int32));

                ds = data.ExecuteDataSet("DB2IM.IMSJH");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        lista.Add(EntidadeFactory.getDominioParametroAtribuicao(linha));
                    }
                }

                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }

            return new List<DominioParametroAtribuicao>();
        }

        public IList<TipoParametroValor> ObterTiposParametroValor()
        {
            //Declara e os objetos
            List<TipoParametroValor> lista = null;
            IDataAccessWrapper data = null;
            DataSet ds = null;
            try
            {
                lista = new List<TipoParametroValor>();

                //Recupera o objeto de acesso a dados
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Recupera a consulta
                ds = data.ExecuteDataSet("DB2IM.IMSJE");

                //Verifica se é válido o retorno
                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    //Percorre todos os registros da tabela
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        //Monta e adiciona o objeto na lista
                        lista.Add(EntidadeFactory.getTipoParametroValor(linha));
                    }
                }

                //Retorna a consulta
                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca os objetos
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }
            //Retorna o objeto limpo
            return new List<TipoParametroValor>();


        }

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que retornar a consulta.                                                 <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "ParametroAtribuicao".</returns>
        public IList<ParametroAtribuicao> ObterParametros()
        {
            //Declara os objetos;
            List<ParametroAtribuicao> lista = null;
            IDataAccessWrapper data = null;
            DataSet ds = null;

            try
            {
                //Instancia o objeto
                lista = new List<ParametroAtribuicao>();

                //Recupera o objeto de acesso a dados
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Recupera a consulta
                ds = data.ExecuteDataSet("DB2IM.IMSJC");

                //Verifica se é válido o retorno
                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    //Percorre todos os registros da tabela
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        //Monta e adiciona o objeto na lista
                        lista.Add(EntidadeFactory.getParametroAtribuicao(linha));
                    }
                }

                //Retorna a consulta
                return lista;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca os objetos
                lista = null;
                data.Dispose();
                data = null;
                ds = null;
            }
            //Retorna o objeto limpo
            return new List<ParametroAtribuicao>();
        }

        public int CriarParametroAtribuicao(ParametroAtribuicao parametroAtribuicao)
        {
            IDataAccessWrapper data = null;
            DataSet ds = null;
            int numeroSequencial = 0;
            int codigoParametro = 0;
            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_DOMN_PARM", "PARAMETROATRIBUICAO", DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_PARM", "NOMEINTERNO", DbType.String));
                data.ParameterOut.Add(new ParameterOutWrapper("@VLR_PARM", DbType.String, 400));

                ds = data.ExecuteParameterToDataSet("DB2IM.IMS48");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    numeroSequencial = Convert.ToInt32(ds.Tables[0].Rows[0]["VLR_PARM"]);

                    data.ParameterIn.Clear();
                    data.ParameterOut.Clear();
                    data.ParameterIn.Add(new ParameterInWrapper("@NOM_DOMN_PARM", "PARAMETROATRIBUICAO", DbType.String));
                    data.ParameterIn.Add(new ParameterInWrapper("@NOM_PARM", "NOMEINTERNO", DbType.String));
                    data.ParameterIn.Add(new ParameterInWrapper("@VLR_PARM", Convert.ToString(numeroSequencial + 1), DbType.String));
                    data.ExecuteNonQuery("DB2IM.IMS50");
                }

                data.ParameterIn.Clear();
                data.ParameterOut.Clear();

                parametroAtribuicao.NomeInternoParametroAtribuicao = GerarNomeInterno(numeroSequencial, parametroAtribuicao.NomeParametroAtribuicao);

                data.ParameterIn.Add(new ParameterInWrapper("@COD_DOMN_PARM_PA", parametroAtribuicao.CodigoDominioParametroAtribuicaoPadrao, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_PARM_ATRI", parametroAtribuicao.NomeParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_INRN_PARM_AT", parametroAtribuicao.NomeInternoParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@DES_PARM_ATRI", parametroAtribuicao.DescricaoParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_UNID", parametroAtribuicao.CodigoUnidade, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_TIPO_PARM_VL", parametroAtribuicao.CodigoTipoParametroValor, DbType.Int16));
                data.ParameterIn.Add(new ParameterInWrapper("@IND_INTV", parametroAtribuicao.IndicadorIntervalo, DbType.Int16));
                data.ParameterOut.Add(new ParameterOutWrapper("@COD_PARM_ATRI", DbType.Int32, 4));

                ds = data.ExecuteParameterToDataSet("DB2IM.IMSJL");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    codigoParametro = Convert.ToInt32(ds.Tables[0].Rows[0]["COD_PARM_ATRI"]);
                    parametroAtribuicao.CodigoParametroAtribuicao = codigoParametro;
                    return codigoParametro;
                }
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                data.Dispose();
                data = null;
                ds = null;
            }

            return codigoParametro;
        }

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterUnidades.                                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "Unidade".</returns>
        public IList<Unidade> ObterUnidades()
        {
            //Cria a lista de Unidades
            List<Unidade> Unidades = new List<Unidade>();

            //Declara o objeto
            IDataAccessWrapper data = null;

            try
            {
                //Instancia o objeto
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Executa a Procedure
                DataSet ds = data.ExecuteDataSet("DB2IM.IMSJD");

                //Verifica se o Dataset retornado está vazio
                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    //Percorre o Dataset
                    foreach (DataRow linha in ds.Tables[0].Rows)
                    {
                        //Adiciona a Unidade na lista
                        Unidades.Add(EntidadeFactory.getUnidade(linha));
                    }
                }
                //Retorna a lista de Unidades
                return Unidades;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca os objetos
                Unidades = null;
                data.Dispose();
                data = null;
            }

            //Retorna a consulta limpa
            return new List<Unidade>();
        }

        public void AtualizarParametroAtribuicao(ParametroAtribuicao parametroAtribuicao)
        {
            IDataAccessWrapper data = null;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", Convert.ToInt32(parametroAtribuicao.CodigoParametroAtribuicao), DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_DOMN_PARM_PAD", Convert.ToInt32(parametroAtribuicao.CodigoDominioParametroAtribuicaoPadrao), DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_PARM_ATRI", parametroAtribuicao.NomeParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@NOM_INRN_PARM_ATRI", parametroAtribuicao.NomeInternoParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@DES_PARM_ATRI", parametroAtribuicao.DescricaoParametroAtribuicao, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_UNID", parametroAtribuicao.CodigoUnidade, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_TIPO_PARM_VLR", parametroAtribuicao.CodigoTipoParametroValor, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@IND_INTV", parametroAtribuicao.IndicadorIntervalo, DbType.Int16));

                data.ExecuteNonQuery("DB2IM.IMSNV");
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                data.Dispose();
                data = null;
            }
        }

        ///// <summary>
        ///// **************************************************************************************************<BR/>
        ///// AUTOR           : Fábrica de Software                                                             <BR/>
        ///// DATA DE CRIAÇÃO : 09/08/2010                                                                      <BR/>
        ///// ALTERADO POR    :                                                                                 <BR/>
        ///// DATA ALTERAÇÃO  :                                                                                 <BR/>
        ///// OBJETIVO        : Método AtualizarDominioParametroAtribuicao.                                     <BR/>
        ///// **************************************************************************************************<BR/> 
        ///// </summary>
        ///// <param name="dominioparametroAtribuicao">Classe DominioParametroAtribuicao</param>
        public void AtualizarDominioParametroAtribuicao(DominioParametroAtribuicao dominioParametroAtribuicao)
        {
            //Declara o objeto
            IDataAccessWrapper data = null;

            try
            {
                //Cria e instancia o objeto 
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Adiciona o parâmetro codigoDominioParametroAtribuicao
                data.ParameterIn.Add(new ParameterInWrapper("@WCOD_DOMN_PARM_AT", Convert.ToInt32(dominioParametroAtribuicao.CodigoDominioParametroAtribuicao), DbType.Int32));

                //Adiciona o parâmetro codigoParametroAtribuicao
                data.ParameterIn.Add(new ParameterInWrapper("@WCOD_PARM_ATRI", Convert.ToInt32(dominioParametroAtribuicao.CodigoParametroAtribuicao), DbType.Int32));

                //Adiciona o parâmetro textoValorDominioParametro
                data.ParameterIn.Add(new ParameterInWrapper("@WTXT_VLR_DOMN_PA", dominioParametroAtribuicao.TextoValorDominioParametro.ToString(), DbType.AnsiStringFixedLength));

                //Adiciona o parâmetro textoValorDominioAtribuicao
                data.ParameterIn.Add(new ParameterInWrapper("@WTXT_VLR_DOMN_AT", dominioParametroAtribuicao.TextoValorDominioAtribuicao.ToString(), DbType.AnsiStringFixedLength));

                //Executa a Procedure
                data.ExecuteNonQuery("DB2IM.IMSND");

            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca o objeto
                data.Dispose();
                data = null;
            }
        }

        ///// <summary>
        ///// **************************************************************************************************<BR/>
        ///// AUTOR           : Fábrica de Software                                                             <BR/>
        ///// DATA DE CRIAÇÃO : 09/08/2010                                                                      <BR/>
        ///// ALTERADO POR    :                                                                                 <BR/>
        ///// DATA ALTERAÇÃO  :                                                                                 <BR/>
        ///// OBJETIVO        : Método ExcluirDominioParametroAtribuicao.                                       <BR/>
        ///// **************************************************************************************************<BR/> 
        ///// </summary>
        ///// <param name="codigoDominioParametroAtribuicao">CodigoDominioParametroAtribuicao</param>
        public void ExcluirDominioParametroAtribuicao(int codigoDominioParametroAtribuicao)
        {
            //Declara o objeto
            IDataAccessWrapper data = null;

            try
            {
                //Cria e instancia o objeto 
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Adiciona o parâmetro codigoDominioParametroAtribuicao
                data.ParameterIn.Add(new ParameterInWrapper("@COD_DOMN_PARM_AT", Convert.ToInt32(codigoDominioParametroAtribuicao), DbType.Int32));

                //Executa a Procedure
                data.ExecuteNonQuery("DB2IM.IMSKT");
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca o objeto
                data.Dispose();
                data = null;
            }
        }

        public int CriarDominioParametroAtribuicao(DominioParametroAtribuicao dominioParametroAtribuicao)
        {
            DataSet ds;
            int codigodominio = 0;
            IDataAccessWrapper data = null;

            try
            {
                data = EnterpriseLibraryFactory.GetDataAccess();

                data.ParameterOut.Add(new ParameterOutWrapper("@COD_DOMN_PARM_ATR", DbType.Int32, 4));
                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", dominioParametroAtribuicao.CodigoParametroAtribuicao, DbType.Int32));
                data.ParameterIn.Add(new ParameterInWrapper("@TXT_VLR_DOMN_PARM", dominioParametroAtribuicao.TextoValorDominioParametro, DbType.String));
                data.ParameterIn.Add(new ParameterInWrapper("@TXT_VLR_DOMN_ATRI", dominioParametroAtribuicao.TextoValorDominioAtribuicao, DbType.String));

                ds = data.ExecuteParameterToDataSet("DB2IM.IMSK6");

                if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    codigodominio = Convert.ToInt32(ds.Tables[0].Rows[0]["COD_DOMN_PARM_ATR"]);
                    dominioParametroAtribuicao.CodigoDominioParametroAtribuicao = codigodominio;
                }

                return codigodominio;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                data.Dispose();
                data = null;
                ds = null;
            }

            return codigodominio = 0;
        }

        ///// <summary>
        ///// **************************************************************************************************<BR/>
        ///// AUTOR           : Fábrica de Software                                                             <BR/>
        ///// DATA DE CRIAÇÃO : 14/08/2010                                                                      <BR/>
        ///// ALTERADO POR    :                                                                                 <BR/>
        ///// DATA ALTERAÇÃO  :                                                                                 <BR/>
        ///// OBJETIVO        : Método GerarNomeInterno.                                                        <BR/>
        ///// **************************************************************************************************<BR/> 
        ///// </summary>
        ///// <param name="numeroSequencial">numeroSequencial</param>
        ///// <param name="nomeParametroAtribuicao">nomeParametroAtribuicao</param>
        public string GerarNomeInterno(int numeroSequencial, string nomeParametroAtribuicao)
        {
            //Declara o array
            string[] split = new string[2];
            int indice1 = -1;
            int indice2 = -1;
            string nomeRetorno = string.Empty;
            nomeParametroAtribuicao = nomeParametroAtribuicao.ToUpper();

            //Caso seja nome de atribuição composta.
            if (nomeParametroAtribuicao.Contains(" "))
            {
                //Quebra a string
                split = nomeParametroAtribuicao.Split(' ');

                //Verifica se é composto contendo "de" "na".
                if (split.Length == 3)
                {
                    indice1 = 0;
                    indice2 = 2;
                }
                else
                {
                    indice1 = 0;
                    indice2 = 1;
                }


                //Monta a primeira parte da string composta
                if (split[indice1].Length < 4)
                    split[indice1] = split[indice1].PadRight(4 - split[indice1].Length, ' ');
                else
                    split[indice1] = split[indice1].Substring(0, 4);

                if (split[indice2].Length < 3)
                    split[indice2] = split[indice2].PadRight(4 - split[indice2].Length, ' ');
                else
                    split[indice2] = split[indice2].Substring(0, 3);

                //Monta o nome
                nomeRetorno = string.Concat(split[indice1], split[indice2]);
            }
            else
            {
                //Caso atribuição simples
                if (nomeParametroAtribuicao.Length > 7)
                    //Caso nome maior que 7 caracteres
                    nomeRetorno = nomeParametroAtribuicao.Substring(0, 7);
                else
                    nomeRetorno = nomeParametroAtribuicao;

            }

            //Retorna a string montada
            return string.Concat(nomeRetorno.ToUpper(), numeroSequencial.ToString("000"));
        }

        ///// <summary>
        ///// **************************************************************************************************<BR/>
        ///// AUTOR           : Fábrica de Software                                                             <BR/>
        ///// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        ///// ALTERADO POR    :                                                                                 <BR/>
        ///// DATA ALTERAÇÃO  :                                                                                 <BR/>
        ///// OBJETIVO        : Excluir Parâmetro Atribuição                                                    <BR/>
        ///// **************************************************************************************************<BR/> 
        ///// </summary>
        ///// <param name="codigoParametro">CodigoParametro</param>
        public void ExcluirParametroAtribuicao(int codigoParametro)
        {
            //Declara o objeto
            IDataAccessWrapper data = null;

            try
            {
                //Cria e instancia o objeto 
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Adiciona o parâmetro codigoParametro
                data.ParameterIn.Add(new ParameterInWrapper("@WCOD_PARM_ATRI", Convert.ToInt32(codigoParametro), DbType.Int32));

                //Executa a Procedure
                data.ExecuteNonQuery("DB2IM.IMS32");

            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca o objeto
                data.Dispose();
                data = null;
            }
        }

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 22/10/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterParametroAtribuicao                                                 <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigo">codigo</param>
        /// <returns>objeto ParametroAtribuicao</returns>
        public ParametroAtribuicao ObterParametroAtribuicao(int codigo)
        {
            //Declara e os objetos
            ParametroAtribuicao objParametroAtribuicao = null;
            IDataAccessWrapper data = null;

            try
            {
                objParametroAtribuicao = new ParametroAtribuicao();

                //Recupera o objeto de acesso a dados
                data = EnterpriseLibraryFactory.GetDataAccess();

                //Adiciona o parâmetro codigoParametro
                data.ParameterIn.Add(new ParameterInWrapper("@COD_PARM_ATRI", Convert.ToInt32(codigo), DbType.Int32));

                data.ParameterOut.Add(new ParameterOutWrapper("@COD_DOMN_PARM_PAD", DbType.Int32, 4));
                data.ParameterOut.Add(new ParameterOutWrapper("@COD_TIPO_PARM_VLR", DbType.Int32, 4));
                data.ParameterOut.Add(new ParameterOutWrapper("@COD_UNID", DbType.Int32, 4));
                data.ParameterOut.Add(new ParameterOutWrapper("@DES_PARM_ATRI", DbType.String, 50));
                data.ParameterOut.Add(new ParameterOutWrapper("@IND_INTV", DbType.Int16, 2));
                data.ParameterOut.Add(new ParameterOutWrapper("@NOM_INRN_PARM_ATR", DbType.String, 10));
                data.ParameterOut.Add(new ParameterOutWrapper("@NOM_PARM_ATRI", DbType.String, 20));


                //Recupera a consulta
                var ds = data.ExecuteParameterToDataSet("DB2IM.IMS89");

                //Verifica se é válido o retorno
                if (ds.Tables.Count > 0)
                {
                    //Monta e adiciona o objeto na lista
                    DataRow dr = ds.Tables[0].Rows[0];
                    objParametroAtribuicao = EntidadeFactory.getParametroAtribuicao(dr);

                }

                //Retorna a consulta
                return objParametroAtribuicao;
            }
            catch (DadosException ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            catch (Exception ex)
            {
                EnterpriseLibraryFactory.GetExceptionHandler().HandleException(ex, "ErrosDados");
            }
            finally
            {
                //Desaloca os objetos
                objParametroAtribuicao = null;
                data.Dispose();
                data = null;
            }

            //Retorna o objeto limpo
            return new ParametroAtribuicao();

        }


        #endregion
    }

    #endregion
}
#endregion